/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tela.iptsp.ass2013;

import ferramentas.CFG;
import ferramentas.Comunicacao;
import ferramentas.DataUtil;
import ferramentas.FileUtil;
import ferramentas.MultipartFormHandler;
import ferramentas.Query;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.activation.UnsupportedDataTypeException;
import javax.mail.MessagingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import tela.edsc.*;

/**
 *
 * @author Lauro
 */
public class formularioASS2013 extends HttpServlet {

    private String email;
    private String nome;
    private String cpf;
    private int inscricao;
    private String paginaInicial = "http://asis.iptsp.ufg.br";
    private String emailAdministrador = "cursodeasis@gmail.com";
    private int m1_1, m1_2, m1_3, m2_1, m2_2, m2_3, m2_4, m2_5, m3_1, m3_2, m3_3, m3_4;
    double total_1, total_2, total_3;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, MessagingException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        try {

            Date inicioInscricoes = DataUtil.converterData(CFG.INICIO_INRICOES_IPTSP_2013_1, DataUtil.DataFormat.DDMMAAAAHHMM);
            Date finalInscricoes = DataUtil.converterData(CFG.FIM_INRICOES_IPTSP_2013_1, DataUtil.DataFormat.DDMMAAAAHHMM);
            Date agora = new Date();

            if (agora.after(finalInscricoes) || agora.before(inicioInscricoes)) {
                throw new UnsupportedDataTypeException();
            } else {
                MultipartFormHandler form = new MultipartFormHandler(5 * CFG.MAX_UPLOAD_FORMULARIOS);

                if (form.isMultipart(request)) {
                    cpf = form.getParameter("cpf");
                    String cpfLimpo = cpf.replaceAll("\\.", "");
                    cpfLimpo = cpfLimpo.replaceAll("-", "");

                    Query q = new Query();

                    boolean isCadastrado = false;
                    if (!cpf.isEmpty()) {
                        isCadastrado = q.isUsuarioCadastradoASS2013(cpf);
                    }

                    if (!isCadastrado) {
                        // == INFORMAÇÕES PESSOAIS
                        nome = form.getParameter("nome");
                        Date nascimento = DataUtil.converterData(form.getParameter("nascimento"), DataUtil.DataFormat.DDMMAAAA);
                        String rg = form.getParameter("rg");
                        String orgao_rg = form.getParameter("orgao_rg");

                        // == ENDEREÇO
                        String rua = form.getParameter("rua");
                        String complemento = form.getParameter("complemento");
                        String bairro = form.getParameter("bairro");
                        String cidade = form.getParameter("cidade");
                        String estado = form.getParameter("estado");

                        // == CONTATO
                        String telefone = form.getParameter("telefone");
                        String celular = form.getParameter("celular");
                        email = form.getParameter("email");

                        // == INFORMAÇÕES PROFISSIONAIS
                        String local_encontro = form.getParameter("local_encontro");
                        String vinculo_sus = form.getParameter("vinculo_sus");
                        String atividade_profissional = form.getParameter("atividade_profissional");

                        // == FORMAÇÃO
                        String graduacao = form.getParameter("graduacao");
                        Date graduacao_termino = DataUtil.converterData(form.getParameter("graduacao_termino"), DataUtil.DataFormat.MMAAAA);

                        String especializacao = form.getParameter("pos_especializacao_check") != null ? form.getParameter("pos_especializacao") : null;
                        Date especializacao_termino = form.getParameter("pos_especializacao_check") != null ? DataUtil.converterData(form.getParameter("pos_especializacao_termino"), DataUtil.DataFormat.MMAAAA) : null;

                        String mestrado = form.getParameter("pos_mestrado_check") != null ? form.getParameter("pos_mestrado") : null;
                        Date mestrado_termino = form.getParameter("pos_mestrado_check") != null ? DataUtil.converterData(form.getParameter("pos_mestrado_termino"), DataUtil.DataFormat.MMAAAA) : null;

                        String doutorado = form.getParameter("pos_doutorado_check") != null ? form.getParameter("pos_doutorado") : null;
                        Date doutorado_termino = form.getParameter("pos_doutorado_check") != null ? DataUtil.converterData(form.getParameter("pos_doutorado_termino"), DataUtil.DataFormat.MMAAAA) : null;

                        String extensao = form.getParameter("formacao_extensao_check") != null ? form.getParameter("formacao_extensao") : null;
                        Date extensao_termino = form.getParameter("formacao_extensao_check") != null ? DataUtil.converterData(form.getParameter("formacao_extensao_termino"), DataUtil.DataFormat.MMAAAA) : null;

                        // == MINICURRICULO
                        m1_1 = Integer.parseInt(form.getParameter("m1_1") != null ? form.getParameter("m1_1") : "0");
                        m1_2 = Integer.parseInt(form.getParameter("m1_2") != null ? form.getParameter("m1_2") : "0");
                        m1_3 = Integer.parseInt(form.getParameter("m1_3") != null ? form.getParameter("m1_3") : "0");
                        m2_1 = Integer.parseInt(form.getParameter("m2_1") != null ? form.getParameter("m2_1") : "0");
                        m2_2 = Integer.parseInt(form.getParameter("m2_2") != null ? form.getParameter("m2_2") : "0");
                        m2_3 = Integer.parseInt(form.getParameter("m2_3") != null ? form.getParameter("m2_3") : "0");
                        m2_4 = Integer.parseInt(form.getParameter("m2_4") != null ? form.getParameter("m2_4") : "0");
                        m2_5 = Integer.parseInt(form.getParameter("m2_5") != null ? form.getParameter("m2_5") : "0");
                        m3_1 = Integer.parseInt(form.getParameter("m3_1") != null ? form.getParameter("m3_1") : "0");
                        m3_2 = Integer.parseInt(form.getParameter("m3_2") != null ? form.getParameter("m3_2") : "0");
                        m3_3 = Integer.parseInt(form.getParameter("m3_3") != null ? form.getParameter("m3_3") : "0");
                        m3_4 = Integer.parseInt(form.getParameter("m3_4") != null ? form.getParameter("m3_4") : "0");

                        total_1 = (((double) m1_1) * 2.0
                                + ((double) m1_2) * 1.0
                                + ((double) m1_3) * 1.0);
                        if (total_1 > 3) {
                            total_1 = 3;
                        }
                        total_2 = (((double) m2_1) * 2.0
                                + ((double) m2_2) * 1.0
                                + ((double) m2_3) * 1.0
                                + ((double) m2_4) * 1.0
                                + ((double) m2_5) * 2.0);
                        if (total_2 > 6) {
                            total_2 = 6;
                        }
                        total_3 = (((double) m3_1) * 0.5
                                + ((double) m3_2) * 1.0
                                + ((double) m3_3) * 1.0
                                + ((double) m3_4) * 0.5);
                        if (total_3 > 1) {
                            total_3 = 1;
                        }

                        // == CHECKBOXES
                        boolean li_edital = form.getParameter("li_edital") != null;

                        // == COMPROVANTES
                        String caminhoArquivo;

                        // Salvar copia_rg
                        FileItem copia_rg_cpf = form.getFile("copia_rg_cpf");
                        String arquivoCopiaRGCPF = null;
                        if (copia_rg_cpf != null && copia_rg_cpf.getSize() > 0) {
                            caminhoArquivo = getPastaDocumentos() + CFG.ASS_RG_CPF;
                            FileUtil.gravarArquivoComExtensao(copia_rg_cpf, caminhoArquivo, cpfLimpo);
                            arquivoCopiaRGCPF = cpfLimpo + FileUtil.getExtensaoArquivo(copia_rg_cpf.getName());
                        }
                        FileItem copia_diploma = form.getFile("copia_diploma");
                        String arquivoDiploma = null;
                        if (copia_diploma != null && copia_diploma.getSize() > 0) {
                            caminhoArquivo = getPastaDocumentos() + CFG.ASS_DIPLOMA;
                            FileUtil.gravarArquivoComExtensao(copia_diploma, caminhoArquivo, cpfLimpo);
                            arquivoDiploma = cpfLimpo + FileUtil.getExtensaoArquivo(copia_diploma.getName());
                        }
                        FileItem comprovante_sus = form.getFile("comprovante_sus");
                        String arquivoComprovanteSUS = null;
                        if (comprovante_sus != null && comprovante_sus.getSize() > 0) {
                            caminhoArquivo = getPastaDocumentos() + CFG.ASS_COMPROVANTE_SUS;
                            FileUtil.gravarArquivoComExtensao(comprovante_sus, caminhoArquivo, cpfLimpo);
                            arquivoComprovanteSUS = cpfLimpo + FileUtil.getExtensaoArquivo(comprovante_sus.getName());
                        }
                        FileItem carta_liberacao = form.getFile("carta_liberacao");
                        String arquivoCartaLiberacao = null;
                        if (carta_liberacao != null && carta_liberacao.getSize() > 0) {
                            caminhoArquivo = getPastaDocumentos() + CFG.ASS_CARTA_LIBERACAO;
                            FileUtil.gravarArquivoComExtensao(carta_liberacao, caminhoArquivo, cpfLimpo);
                            arquivoCartaLiberacao = cpfLimpo + FileUtil.getExtensaoArquivo(carta_liberacao.getName());
                        }
                        FileItem termo_compromisso = form.getFile("termo_compromisso");
                        String arquivoTermoCompromisso = null;
                        if (termo_compromisso != null && termo_compromisso.getSize() > 0) {
                            caminhoArquivo = getPastaDocumentos() + CFG.ASS_TERMO_COMPROMISSO;
                            FileUtil.gravarArquivoComExtensao(termo_compromisso, caminhoArquivo, cpfLimpo);
                            arquivoTermoCompromisso = cpfLimpo + FileUtil.getExtensaoArquivo(termo_compromisso.getName());
                        }

                        inscricao = q.cadastraASS2013(getSQL(),
                                cpf, nome, nascimento, rg, orgao_rg,
                                rua, complemento, bairro, cidade, estado,
                                telefone, celular, email,
                                local_encontro, vinculo_sus, atividade_profissional,
                                graduacao, graduacao_termino, especializacao, especializacao_termino, mestrado, 
                                mestrado_termino, doutorado, doutorado_termino, extensao, extensao_termino,
                                m1_1, m1_2, m1_3, m2_1, m2_2, m2_3, m2_4, m2_5, m3_1, m3_2, m3_3, m3_4,
                                arquivoCopiaRGCPF, arquivoDiploma, arquivoComprovanteSUS, arquivoCartaLiberacao, arquivoTermoCompromisso,
                                li_edital);

                        out.println(getPagina(getMensagenSucesso(), getScriptSucesso()));
                        enviarEmailConfirmacao();
                    } else {
                        out.println(getPagina(getMensagenUsuarioInscrito(), getScriptErro()));
                        String mensagem = new Date() + " - CPF: " + cpf + "\r\n ->Usuário já está inscrito!";
                        System.out.println(new Date() + " - " + mensagem);
                        if (CFG.tipoConfiguracao == CFG.TipoConfiguracao.OFICIAL) {
                            enviarEmailProblema(mensagem);
                        }
                    }
                } else {
                    out.println(getPagina(getMensagenErroGeral(), getScriptErroGeral()));
                    String mensagem = new Date() + " - CPF: " + cpf + " - Nome: " + nome + "\r\n ->Erro ao enviar arquivos! Formulário não é MULTIPART!";
                    System.out.println(new Date() + " - " + mensagem);
                    if (CFG.tipoConfiguracao == CFG.TipoConfiguracao.OFICIAL) {
                        enviarEmailProblema(mensagem);
                    }
                }
            }
        } catch (UnsupportedDataTypeException ex) {
            out.println(getPagina(getMensagenErro("Não é possível se inscrever nesse curso!  Fora do prazo de inscrição!"), getScriptErro()));
            String mensagem = new Date() + " - CPF: " + cpf + " - Nome: " + nome + "\r\n ->Não é possível se inscrever nesse curso!  Fora do prazo de inscrição!";
            System.out.println(new Date() + " - " + mensagem + "\n" + ex);
            if (CFG.tipoConfiguracao == CFG.TipoConfiguracao.OFICIAL) {
                enviarEmailProblema(mensagem + "<br /><em>" + ex + "</em>");
            }
        } catch (Exception ex) {
            out.println(getPagina(getMensagenErroGeral(), getScriptErroGeral()));
            String mensagem = new Date() + " - CPF: " + cpf + " - Nome: " + nome + "\r\n ->" + ex;
            System.out.println(new Date() + " - " + mensagem + "\n" + ex);
            if (CFG.tipoConfiguracao == CFG.TipoConfiguracao.OFICIAL) {
                enviarEmailProblema(mensagem + "<br /><em>" + ex + "</em>");
            }
        } finally {
            out.println("</html>");
            out.close();
        }

    }

    private String getPastaDocumentos() {
        String localDocumentos = CFG.localDocumentos
                + System.getProperty("file.separator") + CFG.DIRETORIO_ARQUIVOS
                + System.getProperty("file.separator") + CFG.DIRETORIO_DOCUMENTOS
                + System.getProperty("file.separator") + CFG.DIRETORIO_DOCUMENTOS_ASS_2013;
        return localDocumentos + System.getProperty("file.separator");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (MessagingException ex) {
            Logger.getLogger(formularioDireitosSociais.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="SQL">
    public String getSQL() {
        return "INSERT INTO inscricoes_ass_2013 ("
                + " cpf, "
                + " nome, "
                + " nascimento, "
                + " rg, "
                + " orgao_rg, "
                + " rua, "
                + " complemento, "
                + " bairro, "
                + " cidade, "
                + " estado, "
                + " telefone, "
                + " celular, "
                + " email, "
                + " local_encontro, "
                + " vinculo_sus, "
                + " atividade_profissional, "
                + " graduacao, "
                + " graduacao_termino, "
                + " especializacao, "
                + " especializacao_termino, "
                + " mestrado, "
                + " mestrado_termino, "
                + " doutorado, "
                + " doutorado_termino, "
                + " extensao, "
                + " extensao_termino, "
                + " m1_1, "
                + " m1_2, "
                + " m1_3, "
                + " m2_1, "
                + " m2_2, "
                + " m2_3, "
                + " m2_4, "
                + " m2_5, "
                + " m3_1, "
                + " m3_2, "
                + " m3_3, "
                + " m3_4, "
                + " copia_rg_cpf, "
                + " diploma, "
                + " comprovante_sus, "
                + " carta_liberacao, "
                + " termo_compromisso, "
                + " li_edital, "
                + " horario "
                + " ) VALUES (  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?  "
                + " )";
    }
    // </editor-fold>

    private void enviarEmailProblema(String mensagem) {
        try {
            Comunicacao c = new Comunicacao();
            String assunto = "Erro no envio de formulário CURSO DE ANÁLISE DE SITUAÇÃO DE SAÚDE";
            c.enviarEmail(CFG.EMAIL_ADMINISTRADORES, assunto, mensagem, "noreply@ciar.ufg.br");
        } catch (MessagingException ex) {
        }
    }

    // <editor-fold defaultstate="collapsed" desc="Email de Confirmação">
    private void enviarEmailConfirmacao() {
        try {
            Comunicacao c = new Comunicacao();
            StringBuilder mensagem = new StringBuilder();
            mensagem.append("<div style='font-size: 14px;'>");
            mensagem.append("Olá, <strong>").append(nome).append("</strong>.");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("Sua inscrição no <strong>CURSO DE ANÁLISE DE SITUAÇÃO DE SAÚDE</strong>, ");
            mensagem.append("oferecido pela Universidade Federal de Goiás, ");
            mensagem.append("de número <strong>").append(inscricao).append("</strong>, ");
            mensagem.append("foi confirmada.");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("INSCRIÇÃO: <strong>").append(inscricao).append("</strong>");
            mensagem.append("<br />");
            mensagem.append("CPF: <strong>").append(cpf).append("</strong>");
            mensagem.append("<br />");
            mensagem.append("NOME: <strong>").append(nome).append("</strong>");
            mensagem.append("<br />");
            mensagem.append("EMAIL: <strong>").append(email).append("</strong>");
            mensagem.append("</div>");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("<div style='font-size: 14px;margin-top: 15px'>");
            mensagem.append("<span style='color: #f00;font-size: 16px;font-weight:bold;'>ATENÇÃO!</span>");
            mensagem.append("<br />");
            mensagem.append("Conforme item <strong>5.2</strong> do edital os alunos selecionados deverão efetuar a matrícula ");
            mensagem.append("por meio do envio de alguns documentos, dentre eles, a comprovação dos dados informados ");
            mensagem.append("no formulário de inscrição nos campos do currículo. ");
            mensagem.append("Esta comprovação <span style='text-decoration: underline;'>deverá ser somente das informações apresentadas no formulário de inscrição</span> ");
            mensagem.append("e não de todo do currículo lattes. Assim, registre este e-mail para utilizá-lo em momento oportuno.");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("Abaixo os dados que você apresentou no ato da inscrição.");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("</div>");
            mensagem.append("<br />");
            mensagem.append("<div style:'margin-left:25px;font-size:13px'>");
            mensagem.append("<table width='600px' style='border: 1px solid #999'>");
            mensagem.append("   <thead>");
            mensagem.append("       <tr>");
            mensagem.append("           <th style='border: 1px solid #999'></th>");
            mensagem.append("           <th style='border: 1px solid #999'>Grupo I &ndash; Títulos Acadêmicos completos (LIMITADO A 3 PONTOS)</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Pontuação</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Quantidade de Títulos</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Pontuação Total</th>");
            mensagem.append("       </tr>");
            mensagem.append("   </thead>");
            mensagem.append("   <tbody>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>1.1</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Doutorado/Mestrado acadêmico ou profissional concluído nas áreas de vigilância em saúde</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>2.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m1_1)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m1_1 * 2.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>1.2</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Doutorado/Mestrado em outras áreas da saúde</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>1.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m1_2)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m1_2 * 1.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>1.3</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Especialização lato sensu nas áreas de vigilância em saúde e/ou epidemiologia</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>1.5</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m1_3)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m1_3 * 1.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='border: 1px solid #999;text-align:right' colspan='4'>Total</td>");
            mensagem.append("           <td style='text-align: center;border: 1px solid #999'>").append(total_1).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("   </tbody>");
            mensagem.append("</table>");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("<table width='600px' style='border: 1px solid #999'>");
            mensagem.append("   <thead>");
            mensagem.append("       <tr>");
            mensagem.append("           <th style='border: 1px solid #999'></th>");
            mensagem.append("           <th style='border: 1px solid #999'>Grupo II &ndash; Atuação nos últimos 10 anos completos (04/2003 a 04/2013)(LIMITADO A 6 PONTOS)</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Pontuação</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Quantidade por anos completos</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Pontuação Total</th>");
            mensagem.append("       </tr>");
            mensagem.append("   </thead>");
            mensagem.append("   <tbody>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>2.1</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Tempo de serviço na área técnica de vigilância em saúde.</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>2.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_1)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_1 * 2.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>2.2</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Tempo de serviço na área técnica de atenção em saúde.</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>1.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_2)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_2 * 1.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>2.3</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Tempo de serviço na área de gestão e planejamento em saúde.</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>1.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_3)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_3 * 1.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>2.4</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Tempo de serviço na Saúde Indígena.</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>1.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_4)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_4 * 1.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>2.5</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Tempo de serviço nos Núcleos Hospitalares de Epidemiologia (NHE) ou similar.</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>2.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_5)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m2_5 * 2.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='border: 1px solid #999;text-align:right' colspan='4'>Total</td>");
            mensagem.append("           <td style='text-align: center;border: 1px solid #999'>").append(total_2).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("   </tbody>");
            mensagem.append("</table>");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("<table width='600px' style='border: 1px solid #999'>");
            mensagem.append("   <thead>");
            mensagem.append("       <tr>");
            mensagem.append("           <th style='border: 1px solid #999'></th>");
            mensagem.append("           <th style='border: 1px solid #999'>Grupo III &ndash; Produção técnica e científica nos últimos 5 anos completos (04/2008 a 04/2013)(LIMITADO A 1 PONTO)</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Pontuação</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Quantidade de Produtos</th>");
            mensagem.append("           <th style='border: 1px solid #999'>Pontuação Total</th>");
            mensagem.append("       </tr>");
            mensagem.append("   </thead>");
            mensagem.append("   <tbody>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>3.1</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Produtos técnicos em Epidemiologia ou Análise de situação de saúde publicado</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>0.5</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_1)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_1 * 0.5)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>3.2</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Artigos publicados em revistas científicas sobre Epidemiologia ou Análise de situação de saúde</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>1.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_2)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_2 * 1.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>3.3</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Apresentação oral de trabalhos em congressos da saúde ou relacionados.</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>1.0</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_3)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_3 * 1.0)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>3.4</td>");
            mensagem.append("           <td style='padding: 0 5px;border: 1px solid #999'>Apresentação em forma de pôster em congressos da saúde ou relacionados.</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>0.5</td>");
            mensagem.append("           <td style='font-weight:bold;text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_4)).append("</td>");
            mensagem.append("           <td style='text-align: center;width: 90px;padding: 0 5px;border: 1px solid #999'>").append(String.valueOf(m3_4 * 0.5)).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("       <tr>");
            mensagem.append("           <td style='border: 1px solid #999;text-align:right' colspan='4'>Total</td>");
            mensagem.append("           <td style='text-align: center;border: 1px solid #999'>").append(total_3).append("</td>");
            mensagem.append("       </tr>");
            mensagem.append("   </tbody>");
            mensagem.append("</table>");
            mensagem.append("</div>");
            mensagem.append("<br />");
            mensagem.append("<div style='font-size: 14px;margin-top: 20px'>");
            mensagem.append("Atenciosamente,");
            mensagem.append("<br />");
            mensagem.append("Coordenação do Curso.");
            mensagem.append("</div>");
            mensagem.append("<br />");
            mensagem.append("<br />");
            mensagem.append("<hr>");
            mensagem.append("<div style='color: #333; font-style: italic;font-size: 11px'>");
            mensagem.append("Esta mensagem foi gerada automaticamente. Não responda.");
            mensagem.append("</div>");
            String assunto = "Confirmação de inscrição para o curso de ANÁLISE DE SITUAÇÃO DE SAÚDE";
            c.enviarEmail(new String[]{email, emailAdministrador}, assunto, mensagem.toString(), "noreply@ciar.ufg.br");
        } catch (MessagingException ex) {
            System.out.println(new Date() + " - CPF: " + cpf + " - Erro ao enviar e-mail de confirmação de inscrição.");
        }
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="Padrão da Página">
    private String getPagina(String texto, String script) {
        StringBuilder s = new StringBuilder();
        s.append("<head>");
        s.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
        s.append("<title>Ficha de Inscrição</title>");
        s.append("<link rel=\"shortcut icon\" href=\"http://www.ufg.br/imagens/ufg.ico\">");
        s.append("<link type=\"text/css\" media=\"all\" rel=\"stylesheet\" href=\"http://portal.mec.gov.br//templates/mec/barra_governo3/css/barra_do_governo.css\">");
        s.append("<link type=\"text/css\" media=\"all\" rel=\"stylesheet\" href=\"http://portal.mec.gov.br//templates/mec/barra_governo3/css/barra_do_governo_ajustes.css\">");
        s.append("<link rel=\"stylesheet\" href=\"scripts/jquery-ui/css/base/jquery.ui.all.css\">");
        s.append("<link rel=\"stylesheet\" href=\"scripts/jquery-ui/css/redmond/jquery-ui-1.8.12.custom.css\">");
        s.append("<link rel=\"stylesheet\" href=\"style.css\">");
        s.append("<script type=\"text/javascript\" src=\"scripts/jquery.js\"></script>");
        s.append("<script type=\"text/javascript\" src=\"scripts/jquery.validate.js\"></script>");
        s.append("<script type=\"text/javascript\" src=\"scripts/uteis.js\"></script>");
        s.append("</head>");
        s.append("<body>");
        s.append("<div id=\"barra-brasil-v3\">");
        s.append("  <div id=\"barra-brasil-v3-marca\">");
        s.append("      <a title=\"www.brasil.gov.br\" target=\"_blank\" href=\"http://www.brasil.gov.br/\">Brasil – Governo Federal</a>");
        s.append("      – Ministério da Educação");
        s.append("  </div>");
        s.append("</div>");
        s.append("<center>");
        s.append("<table id=\"Tabela_01\" width=\"793\" height=\"40\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
        s.append("  <tbody><tr>");
        s.append("      <td>");
        s.append("          <a href=\"http://eadmin.ciar.ufg.br/\">");
        s.append("          <img src=\"img/eadmin_logo.png\" width=\"149\" height=\"40\" border=\"0\"></a></td>");
        s.append("      <td>");
        s.append("          <img src=\"img/top_02.gif\" width=\"455\" height=\"40\"></td>");
        s.append("      <td>");
        s.append("          <a href=\"http://www.ciar.ufg.br/\">");
        s.append("          <img src=\"img/ciar.png\" width=\"76\" height=\"40\" border=\"0\" ></a></td>");
        s.append("      <td>");
        s.append("          <img src=\"img/top_04.png\" width=\"14\" height=\"40\"></td>");
        s.append("      <td>");
        s.append("          <a href=\"http://www.ufg.br/\">");
        s.append("          <img src=\"img/ufg.png\" width=\"99\" height=\"40\" border=\"0\"></a></td>");
        s.append("      </tr>");
        s.append("  </tbody>");
        s.append("</table>");
        s.append("</center>");
        s.append("<div id=\"pagina\">");
        s.append("  <div id=\"conteudo\">");
        s.append(texto);
        s.append("<script>");
        s.append(script);
        s.append("</script");
        s.append("  </div>");
        s.append("</div>");
        s.append("</body>");
        return s.toString();
    }
    // </editor-fold>

    private String getMensagenSucesso() {
        StringBuilder s = new StringBuilder();
        s.append("<center style=\"margin-top: 50px\">");
        s.append("<h1>Sua inscrição foi efetivada com sucesso!</h1>");
        s.append("</center>");
        s.append("<div style=\"margin: 45px 10px\">Acesse o e-mail informado no ato de sua inscrição e leia atentamente as informações.</div>");
        s.append("<div style=\"margin: 10px\">Obrigada!</div>");
        s.append("<div style=\"margin: 10px\">Equipe de coordenação do Curso.</div>");
        s.append("<div style=\"margin: 20px 10px\"><a href=\"").append(paginaInicial).append("\">Voltar à página do curso</a></div>");
        return s.toString();
    }

    private String getMensagenErro(String texto) {
        StringBuilder s = new StringBuilder();
        s.append("<center style=\"margin-top: 50px\">");
        s.append("<h1>ERRO na inscrição!</h1>");
        s.append("</center>");
        s.append("<div style=\"text-align: center;color: #f00;\">").append(texto).append(")!</div>");
        s.append("<div style=\"margin: 20px 10px\"><a href=\"#\" onclick=\"history.go(-1); return false;\">Voltar</a></div>");
        return s.toString();
    }

    private String getMensagenUsuarioInscrito() {
        return getMensagenErro("Usuário já está inscrito (CPF: " + cpf + ")!");
    }

    private String getMensagenErroGeral() {
        return getMensagenErro("Erro ao cadastrar! Entre em contato com Suporte para tentar resolver o seu problema.");
    }

    private String getScriptSucesso() {
        StringBuilder s = new StringBuilder();
        s.append("setTimeout( function() {");
        s.append("self.location ='").append(paginaInicial).append("';");
        s.append("}, 6000);");
        return s.toString();
    }

    private String getScriptErro() {
        StringBuilder s = new StringBuilder();
        s.append("setTimeout( function() {");
        s.append("history.go(-1);");
        s.append("}, 6000);");
        return s.toString();
    }

    private String getScriptErroGeral() {
        StringBuilder s = new StringBuilder();
        s.append("window.alert('Erro ao cadastrar! Entre em contato com Suporte para tentar resolver o seu problema.');");
        s.append("history.go(-1);");
        return s.toString();
    }
}
